/*
 * Vector3f.h
 *
 *  Created on: Apr 29, 2009
 *      Author: wrice
 */

#ifndef VECTOR_H_
#define VECTOR_H_
#include "MyVideoTrace.h"
namespace MyVideoTrace {

class Vector3f {
public:
	Vector3f( float x, float y, float z );

	virtual float getX() const;
	virtual float getY() const;
	virtual float getZ() const;

	virtual Vector3f normalized() const;
	virtual float getLength() const;
	virtual float dotProduct( Vector3f rhs ) const;
	virtual Vector3f crossProduct( Vector3f rhs ) const;
	virtual Vector3f abs() const;
	virtual float distance( Vector3f rhs ) const;

	virtual Vector3f operator+ ( Vector3f rhs ) const;
	virtual Vector3f operator- ( Vector3f rhs ) const;
	virtual Vector3f operator* (float scalar) const;
	virtual Vector3f operator/ (float scalar) const;

private:
	float x_, y_, z_;

public: ~Vector3f() {}
};

}

#endif /* VECTOR_H_ */
